#ifndef SIMPLECOLLECTORDATA_H
#define SIMPLECOLLECTORDATA_H

#include <QXmlContentHandler>
#include "article5common.h"

class SimpleCollectorData : public QXmlContentHandler
{
protected:
    QVector<SimpleEdgeElement*> _ancestor;
    QMap<uint,SimpleEdgeElement*> _map;

    struct timespec _startTime,
        _endTime;
    uint _numOfElements;

public:
    SimpleCollectorData(const QString& filename);
    virtual ~SimpleCollectorData();
    virtual void setDocumentLocator(QXmlLocator* locator);
    virtual bool startDocument();
    virtual bool endDocument();
    virtual bool startPrefixMapping(const QString& prefix, const QString& uri);
    virtual bool endPrefixMapping(const QString& prefix);
    virtual bool startElement(const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts);
    virtual bool endElement(const QString& namespaceURI, const QString& localName, const QString& qName);
    virtual bool characters(const QString& ch);
    virtual bool ignorableWhitespace(const QString& ch);
    virtual bool processingInstruction(const QString& target, const QString& data);
    virtual bool skippedEntity(const QString& name);
    virtual QString errorString() const;

    QMap<uint,SimpleEdgeElement*>& getData() { return _map; }
    uint getTimeElapsed() { return timespecToMilisecond(_endTime) - timespecToMilisecond(_startTime); }
};

#endif // SIMPLECOLLECTORDATA_H
